home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Everything For A Hacker
/
19990506-[HACK].iso
/
SECURE
/
CRYPT
/
GOST.ZIP
/
GOST.H
< prev
next >
Wrap
Text File
|
1997-11-08
|
4KB
|
112 lines
/*----------------------------------------------------
gost.h -- «»¿ßá¡¿∩ ñá¡¡δσ ¿ »α«Γ«Γ¿»δ Σπ¡¬µ¿⌐ Φ¿Σ-
α«óá¡¿∩.
----------------------------------------------------
éÑαß¿∩ 1.01 «Γ 09.11.97, (c)1994,1997 é¿¡«¬πα«ó Ç.₧.
(çñÑß∞ ºá½«ªÑ¡δ ¡Ñ¬«Γ«δÑ ó«º¼«ª¡«ßΓ¿ ¡á íπñπΘÑÑ)
----------------------------------------------------
éáα¿á¡Γδ ¬«¼»¿½∩µ¿¿:
æ¿¼ó«½ VarKey:
- Ñß½¿ ¡Ñ «»αÑñѽѡ, ñ½¿¡á ¬½ετá ó Σπ¡¬µ¿∩σ Φ¿Σα«-
óá¡¿∩ Σ¿¬ß¿α«óá¡á ¿ ¡Ñ »ÑαÑñáÑΓß∩ ¬á¬ »áαá¼ÑΓα;
- Ñß½¿ «»αÑñѽѡ, ñ½¿¡á ¬½ετá »ÑαÑñáÑΓß∩ ¬á¬ »áαá-
¼ÑΓα ó Σπ¡¬µ¿¿ Φ¿Σα«óá¡¿∩;
----------------------------------------------------
*/
typedef unsigned long Item; // φ½Ñ¼Ñ¡Γ ñá¡¡δσ
typedef unsigned short word; // τ¿ß½«
typedef struct // ¬α¿»Γ«í½«¬
{
Item low,high;
} CrBlock;
void ExpCht ( // ÉáßΦ¿αÑ¡¿Ñ Γáí½¿µδ ºá¼Ñ¡
Item far *source, // «í½áßΓ∞ ¿ßσ«ñ¡«⌐ Æç
Item far *target); // «í½áßΓ∞ αáßΦ¿αÑ¡¡«⌐ Æç
void ExpandKey ( // ïεí«Ñ αáßΦ¿αÑ¡¿Ñ ¬½ετá
Item far *source, // «í½áßΓ∞ ¿ßσ«ñ¡«ú« ¬½ετá
Item far *target, // «í½áßΓ∞ αáßΦ¿αÑ¡. ¬½ετá
word KeyLength, // αẼÑα ¬½ετá
word KeyRepeat, // τ¿ß½« »«óΓ«αÑ¡¿⌐ ¬½ετá
word ReapeatMask,...);// ¼áß¬á »«óΓ«αÑ¡¿⌐ ¬½ετá
void ExpKey31 ( // ÉáßΦ¿αÑ¡¿Ñ ¬½ετá '3+1'
Item far *source, // «í½áßΓ∞ ¿ßσ«ñ¡«ú« ¬½ετá
Item far *target); // «í½áßΓ∞ αáßΦ¿αÑ¡. ¬½ετá
void ExpKey33 ( // ÉáßΦ¿αÑ¡¿Ñ ¬½ετá '3+3'
Item far *source, // «í½áßΓ∞ ¿ßσ«ñ¡«ú« ¬½ετá
Item far *target); // «í½áßΓ∞ αáßΦ¿αÑ¡. ¬½ετá
void ExpKey13 ( // ÉáßΦ¿αÑ¡¿Ñ ¬½ετá '1+3'
Item far *source, // «í½áßΓ∞ ¿ßσ«ñ¡«ú« ¬½ετá
Item far *target); // «í½áßΓ∞ αáßΦ¿αÑ¡. ¬½ετá
void gamma ( // âá¼¼¿α«óá¡¿Ñ ñá¡¡δσ
Item far *key, // áñαÑß ¬½ετá
Item far *synchro, // áñαÑß ß¿¡σα«»«ß佬¿
void far *xcht, // áñαÑß Γáí½¿µδ ºá¼Ñ¡
void far *data, // áñαÑß úá¼¼¿απѼδσ ñá¡¡δσ
unsigned short blocks // τ¿ß½« Φ¿ΣαπѼδσ í½«¬«ó
#ifdef VarKey
,unsigned short keylen // ñ½¿¡á ¬½ετá ó φ½Ñ¼Ñ¡Γáσ
#endif
);
void gamme ( // éδαáí«Γ¬á úá¼¼δ
Item far *key, // áñαÑß ¬½ετá
Item far *synchro, // áñαÑß ß¿¡σα«»«ß佬¿
void far *xcht, // áñαÑß Γáí½¿µδ ºá¼Ñ¡
void far *data, // áñαÑß úá¼¼¿απѼδσ ñá¡¡δσ
unsigned short blocks // τ¿ß½« Φ¿ΣαπѼδσ í½«¬«ó
#ifdef VarKey
,unsigned short keylen // ñ½¿¡á ¬½ετá ó φ½Ñ¼Ñ¡Γáσ
#endif
);
void gammaLE( // çáΦ¿Σα«óá¡¿Ñ-úá¼¼¿α. ß Äæ
Item far *key, // áñαÑß ¬½ετá
Item far *synchro, // áñαÑß ß¿¡σα«»«ß佬¿
void far *xcht, // áñαÑß Γáí½¿µδ ºá¼Ñ¡
void far *data, // áñαÑß úá¼¼¿απѼδσ ñá¡¡δσ
unsigned short blocks // τ¿ß½« Φ¿ΣαπѼδσ í½«¬«ó
#ifdef VarKey
,unsigned short keylen // ñ½¿¡á ¬½ετá ó φ½Ñ¼Ñ¡Γáσ
#endif
);
void gammaLD( // ÉáßΦ¿Σα«óá¡¿Ñ-úá¼¼¿α. ß Äæ
Item far *key, // áñαÑß ¬½ετá
Item far *synchro, // áñαÑß ß¿¡σα«»«ß佬¿
void far *xcht, // áñαÑß Γáí½¿µδ ºá¼Ñ¡
void far *data, // áñαÑß úá¼¼¿απѼδσ ñá¡¡δσ
unsigned short blocks // τ¿ß½« Φ¿ΣαπѼδσ í½«¬«ó
#ifdef VarKey
,unsigned short keylen // ñ½¿¡á ¬½ετá ó φ½Ñ¼Ñ¡Γáσ
#endif
);
void simple( // ÿ¿Σα«óá¡¿Ñ »α«ßΓ«⌐ ºá¼Ñ¡«⌐
Item far *key, // áñαÑß ¬½ετá
void far *data, // áñαÑß Φ¿ΣαπѼδσ ñá¡¡δσ
void far *xcht, // áñαÑß Γáí½¿µδ ºá¼Ñ¡
unsigned short blocks // τ¿ß½« Φ¿ΣαπѼδσ í½«¬«ó
#ifdef VarKey
,unsigned short keylen // ñ½¿¡á ¬½ετá ó φ½Ñ¼Ñ¡Γáσ
#endif
);
Item imito ( // éδτ¿ß½Ñ¡¿Ñ ¿¼¿Γ«»α¿ßΓáó¬¿
Item far *key, // áñαÑß ¬½ετá
Item far *combine, // áñαÑß ¡áτá½∞¡«⌐ ¬«¼í¿¡áµ¿¿
void far *xcht, // áñαÑß Γáí½¿µδ ºá¼Ñ¡
void far *data, // áñαÑß úá¼¼¿απѼδσ ñá¡¡δσ
unsigned short blocks // τ¿ß½« í½«¬«ó
#ifdef VarKey
,unsigned short keylen // ñ½¿¡á ¬½ετá ó φ½Ñ¼Ñ¡Γáσ
#endif
);